<?php

App::uses('AppController', 'Controller');

class AlunoFinanceirosController extends AppController {
	
	public function alterar($aluno_financeiro_id = null) {

		if ($this->request->data) {
			$this->autoRender = false;
			$this->request->data['AlunoFinanceiro'] = $this->request->data['AlterarAlunoFinanceiro'];
			unset($this->request->data['AlterarAlunoFinanceiro']);			
			if ($this->{$this->modelClass}->save($this->request->data)) {
				$retorno['sucesso'] = true;
			} else {
				$retorno['sucesso'] = false;
				$retorno['mensagem'] = 'Houve um erro ao tentar gravar!';
			}
			return json_encode($retorno);
		} else {
			$this->layout = 'ajax';
			$this->{$this->modelClass}->id = $aluno_financeiro_id;
			$this->{$this->modelClass}->recursive = 0;
			$this->request->data = $this->{$this->modelClass}->read();
			$this->request->data['AlterarAlunoFinanceiro'] = $this->request->data['AlunoFinanceiro'];
			$this->set('meses', $this->{$this->modelClass}->carregar_mes());			
			$this->set('situacoes', $this->{$this->modelClass}->carregar_situacao());
		}
		
	}
	
	public function cancelar_pagamento() {
		
		$this->autoRender = false;
		
		$aluno_financeiro_id = $this->request->data['AlterarAlunoFinanceiro']['id'];
		
		$obj['AlunoFinanceiro']['id'] = $aluno_financeiro_id;
		$obj['AlunoFinanceiro']['data_pagto'] = null;
		$obj['AlunoFinanceiro']['situacao'] = 'A';
		
		if ($this->{$this->modelClass}->save($obj, array('validate' => false))) {
			
			$this->{$this->modelClass}->AlunoFinanceiroDetalhe->deleteAll(array(
				'aluno_financeiro_id' => $aluno_financeiro_id,
				'origem' => 3
			));
			
			$retorno['sucesso'] = true;
		} else {
			$retorno['sucesso'] = false;
			$retorno['mensagem'] = 'Erro.';
		}
		
		return json_encode($retorno);
	}
	
	public function diferenca_pagamento() {
		
		$this->layout = 'ajax';
		
		$valor_devido = $this->{$this->modelClass}->get_valor_devido($this->request->data['AlunoFinanceiro']['id']);
		$valor_pago = $this->request->data['AlunoFinanceiro']['valor_pago'];
		
		$valor_diferenca = $this->{$this->modelClass}->money_to_store($valor_devido) - $this->{$this->modelClass}->money_to_store($valor_pago);
		
		$eventos = array();  
		
		if ($valor_diferenca > 0) {
			$eventos = $this->{$this->modelClass}->AlunoFinanceiroDetalhe->Evento->find('list', array('conditions' => array('categoria_id' => 2), 'order' => 'nome'));
		} else if ($valor_diferenca < 0) {
			$valor_diferenca = -1 * $valor_diferenca;
			$eventos = $this->{$this->modelClass}->AlunoFinanceiroDetalhe->Evento->find('list', array('conditions' => array('categoria_id' => 3), 'order' => 'nome'));
		}

		$this->set('eventos', $eventos);
		$this->set('valor_diferenca', $this->{$this->modelClass}->money_to_view($valor_diferenca));
	}
	
	public function efetuar_pagamento($aluno_financeiro_id = null) {

		if ($this->request->data) {
			
			$this->autoRender = false;
			
			$valor_diferenca = $this->{$this->modelClass}->money_to_store(@$this->request->data['AlunoFinanceiro']['valor_diferenca']);
			$evento_id = @$this->request->data['AlunoFinanceiro']['evento_id'];

			if ($this->{$this->modelClass}->save($this->request->data)) {
				
				if ($valor_diferenca > 0) {
					$obj = array();
					$obj['AlunoFinanceiroDetalhe']['aluno_financeiro_id'] = $this->request->data['AlunoFinanceiro']['id'];
					$obj['AlunoFinanceiroDetalhe']['origem'] = $this->request->data['AlunoFinanceiro']['origem'];
					$obj['AlunoFinanceiroDetalhe']['evento_id'] = $evento_id;
					$obj['AlunoFinanceiroDetalhe']['tipo'] = $this->{$this->modelClass}->AlunoFinanceiroDetalhe->Evento->get_tipo($evento_id);
					$obj['AlunoFinanceiroDetalhe']['valor'] = $valor_diferenca;
				
					$this->{$this->modelClass}->AlunoFinanceiroDetalhe->save($obj);
				}				

				$retorno['sucesso'] = true;
			} else {
				$retorno['sucesso'] = false;
				$retorno['mensagem'] = 'Houve um erro ao tentar gravar!';
			}

			return json_encode($retorno);
			
		} else {
			
			$this->layout = 'ajax';
			$this->{$this->modelClass}->id = $aluno_financeiro_id;
			$this->{$this->modelClass}->recursive = 0;
			$this->request->data = $this->{$this->modelClass}->read();
			$this->set('meses', $this->{$this->modelClass}->carregar_mes());			
			$this->set('situacoes', $this->{$this->modelClass}->carregar_situacao());
			$this->set('data_pagto', $this->{$this->modelClass}->today('br'));
		}
		
	}	
	
	public function ficha_financeira() {
		
		$this->set('title_for_layout', 'Ficha Financeira');
		
	}
	
	public function ficha_financeira_aluno($aluno_id = null) {
		
		$this->layout = 'ajax';
		
		$anos = $this->{$this->modelClass}->find('all',
			array(
				'conditions' => array('AlunoFinanceiro.aluno_id' => $aluno_id),
				'fields' => array('AlunoFinanceiro.ano'),
				'group' => array('AlunoFinanceiro.aluno_id','AlunoFinanceiro.ano'),
				'order' => array('AlunoFinanceiro.aluno_id','AlunoFinanceiro.ano desc')
			)
		);
		
		$this->set('anos', $anos);
		
	}
	
	public function ficha_financeira_mensalidades($aluno_id = null, $ano = null) {
		
		$this->layout = 'ajax';
		
		$mensalidades = $this->{$this->modelClass}->find('all',
			array(
				'conditions' => array('AlunoFinanceiro.aluno_id' => $aluno_id, 'AlunoFinanceiro.ano' => $ano),
				'order' => array('AlunoFinanceiro.aluno_id','AlunoFinanceiro.ano','AlunoFinanceiro.mes')
			)
		);
		
		$this->set('mensalidades', $mensalidades);
		$this->set('meses', $this->{$this->modelClass}->carregar_mes());
		$this->set('situacoes', $this->{$this->modelClass}->carregar_situacao());
		
	}
	
	public function imprimir_demonstrativo($aluno_id, $ano) {
		
		$this->layout = 'relatorio_padrao';
		
		$mensalidades = $this->{$this->modelClass}->find('all', array(
			'conditions' => array('AlunoFinanceiro.aluno_id' => $aluno_id, 'AlunoFinanceiro.ano' => $ano), 
			'order' => 'AlunoFinanceiro.aluno_id, AlunoFinanceiro.mes',
			'recursive' => 1
		));
		
		$this->set('mensalidades', $mensalidades);
		$this->set('ano', $ano);
		$this->set('aluno', $this->AlunoFinanceiro->Aluno->find('first', array('recursive' => 0, 'conditions' => array('Aluno.id' => $aluno_id))));
		$this->set('meses', $this->{$this->modelClass}->carregar_mes());
		$this->set('situacoes', $this->{$this->modelClass}->carregar_situacao());
		$this->set('eventos', $this->{$this->modelClass}->AlunoFinanceiroDetalhe->Evento->find('list'));
		
		$this->render('rel_demonstrativo_financeiro');
		
	}
	
	public function imprimir_carnes($aluno_id, $ano) {
		
		$this->layout = 'carne';
		
		$mensalidades = $this->{$this->modelClass}->find('all', array(
			'conditions' => array(
				'AlunoFinanceiro.aluno_id' => $aluno_id, 
				'AlunoFinanceiro.ano' => $ano,
				'AlunoFinanceiro.situacao' => 'A'
			), 
			'order' => 'AlunoFinanceiro.aluno_id, AlunoFinanceiro.mes',
			'recursive' => 1
		));
		
		$this->set('mensalidades', $mensalidades);
		$this->set('ano', $ano);
		$this->set('aluno', $this->AlunoFinanceiro->Aluno->find('first', array('recursive' => 0, 'conditions' => array('Aluno.id' => $aluno_id))));
		$this->set('matricula', $this->AlunoFinanceiro->Aluno->Matricula->find('first', array('recursive' => 0, 'conditions' => array('Matricula.aluno_id' => $aluno_id, 'Matricula.ano' => $ano))));
		$this->set('meses', $this->{$this->modelClass}->carregar_mes());
		$this->set('situacoes', $this->{$this->modelClass}->carregar_situacao());
		$this->set('eventos', $this->{$this->modelClass}->AlunoFinanceiroDetalhe->Evento->find('list'));
		
		$this->render('rel_carnes');
		
	}	

}